/**
 * LCR 120. 寻找文件副本
 *
 * 设备中存有 n 个文件，文件 id 记于数组 documents。若文件 id 相同，则定义为该文件存副本。请返回任一存在副本的文件 id。
 *
 * 示例 1：
 * 输入：documents = [2, 5, 3, 0, 5, 0]
 * 输出：0 或 5
 */

function findRepeatNumber(nums: number[]): number {
	for (let idx = 0; idx < nums.length; idx++) {
		let val = nums[idx]
		while (val !== idx) {
			if (nums[val] === val) {
				return val
			}
			;[nums[val], val] = [val, nums[val]]
		}
	}

	return NaN
}

function findRepeatNumber2(nums: number[]): number | null {
	const map = new Map()
	for (let i = 0; i < nums.length; i++) {
		if (map.has(nums[i])) {
			return nums[i]
		}
		map.set(nums[i], true)
	}
	return null
}
